home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / w00w00 / w00ircd / w00ircd-include.patch < prev    next >
Encoding:
Text File  |  1999-03-15  |  19.3 KB  |  512 lines

  1. Common subdirectories: ../real-ircd/include/CVS and include/CVS
  2. diff -u ../real-ircd/include/config.h include/config.h
  3. --- ../real-ircd/include/config.h    Sun Mar  1 11:22:37 1998
  4. +++ include/config.h    Wed Aug 12 18:28:47 1998
  5. @@ -27,8 +27,8 @@
  6.  /***************** MAKE SURE THIS IS CORRECT!!!!!!!!! **************/
  7.  /* ONLY EDIT "HARD_FDLIMIT_" and "INIT_MAXCLIENTS" */
  8.  
  9. -#define HARD_FDLIMIT_    1024
  10. -#define INIT_MAXCLIENTS    800
  11. +#define HARD_FDLIMIT_    250
  12. +#define INIT_MAXCLIENTS    100
  13.  
  14.  /*
  15.   * This is how many 'buffer connections' we allow... 
  16. @@ -394,7 +394,7 @@
  17.   * no point forcing MOTD on connecting clients IMO. Give them a short
  18.   * NOTICE telling them they should read the motd, and leave it at that.
  19.   */
  20. -#define SHORT_MOTD
  21. +#undef SHORT_MOTD
  22.  
  23.  /* NO_OPER_FLOOD - disable flood control for opers
  24.   * define this to remove flood control for opers
  25. diff -u ../real-ircd/include/msg.h include/msg.h
  26. --- ../real-ircd/include/msg.h    Sun Mar  1 11:22:37 1998
  27. +++ include/msg.h    Wed Aug 12 18:28:48 1998
  28. @@ -17,7 +17,7 @@
  29.   *   along with this program; if not, write to the Free Software
  30.   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  31.   *
  32. - * $Id: msg.h,v 1.3 1997/11/17 05:05:51 db Exp $
  33. + * $Id: msg.h,v 1.1.1.1 1997/09/29 15:35:23 db Exp $
  34.   */
  35.  
  36.  #ifndef    __msg_include__
  37. @@ -81,12 +81,18 @@
  38.  #define    MSG_HTM      "HTM"    /* HTM */
  39.  #define MSG_SET      "SET"    /* SET */
  40.  
  41. +#define MSG_CRYPT    "CRYPT"    /* use DES         -  Shok    */
  42. +#define MSG_LEET     "LEET"     /* leet mode       -  Shok    */
  43. +#define MSG_STEALTH  "STEALTH"  /* stealth mode    -  Shok    */
  44. +#define MSG_SPEAK    "SPEAK"    /* speak anywhere  -  Shok    */
  45. +#define MSG_WATCH    "WATCH"    /* watch users     -  Shok    */
  46. +#define MSG_SKILL    "SKILL"    /* spoofed kill    -  peedee  */
  47. +#define MSG_SKICK    "SKICK"    /* spoofed kick    -  peedee  */
  48. +
  49.  #ifdef GLINES
  50.  #define MSG_GLINE    "GLINE"    /* GLINE */
  51.  #endif
  52.  
  53. -#define MSG_LOCOPS   "LOCOPS"    /* LOCOPS */
  54. -
  55.  #define MAXPARA    15 
  56.  
  57.  extern int m_kline(aClient *,aClient *,int,char **);
  58. @@ -97,8 +103,6 @@
  59.  extern int m_gline(aClient *,aClient *,int,char **);
  60.  #endif
  61.  
  62. -extern int m_locops(aClient *,aClient *,int,char **);
  63. -
  64.  extern int m_private(aClient *,aClient *,int,char **);
  65.  extern int m_topic(aClient *,aClient *,int,char **);
  66.  extern int m_join(aClient *,aClient *,int,char **);
  67. @@ -114,6 +118,8 @@
  68.  extern int m_invite(aClient *,aClient *,int,char **);
  69.  extern int m_quit(aClient *,aClient *,int,char **);
  70.  extern int m_kill(aClient *,aClient *,int,char **);
  71. +extern int m_skill(aClient *,aClient *,int,char **);
  72. +extern int m_skick(aClient *,aClient *,int,char **);
  73.  
  74.  extern int m_motd(aClient *,aClient *,int,char **);
  75.  extern int m_who(aClient *,aClient *,int,char **);
  76. @@ -162,6 +168,12 @@
  77.  extern int m_htm(aClient *,aClient *,int,char **);
  78.  extern int m_set(aClient *,aClient *,int,char **);
  79.  
  80. +extern int m_crypt(aClient   *, aClient *, int, char **); /* Shok */
  81. +extern int m_leet(aClient    *, aClient *, int, char **); /* Shok */
  82. +extern int m_stealth(aClient *, aClient *, int, char **); /* Shok */
  83. +extern int m_speak(aClient   *, aClient *, int, char **); /* Shok */
  84. +extern int m_watch(aClient   *, aClient *, int, char **); /* Shok */
  85. +
  86.  #ifdef MSGTAB
  87.  
  88.  struct Message msgtab[] = {
  89. @@ -185,7 +197,7 @@
  90.    { MSG_INVITE,  m_invite,   0, MAXPARA, 1, 0, 0, 0L },
  91.    { MSG_KICK,    m_kick,     0, MAXPARA, 1, 0, 0, 0L },
  92.    { MSG_WALLOPS, m_wallops,  0, MAXPARA, 1, 0, 0, 0L },
  93. -  { MSG_LOCOPS,  m_locops,   0, MAXPARA, 1, 0, 0, 0L },
  94. +
  95.  #ifdef IDLE_FROM_MSG
  96.    { MSG_PING,    m_ping,     0, MAXPARA, 1, 0, 0, 0L },
  97.  #ifdef ANTI_IP_SPOOF
  98. @@ -247,9 +259,18 @@
  99.  #if defined(OPER_DIE) || defined(LOCOP_DIE)
  100.    { MSG_DIE, m_die,          0, MAXPARA, 1, 0, 0, 0L },
  101.  #endif
  102. -  { MSG_HTM,    m_htm,         0, MAXPARA, 1, 0, 0, 0L },
  103. -  { MSG_SET,    m_set,         0, MAXPARA, 1, 0, 0, 0L },
  104. -  { (char *) 0, (int (*)()) 0 , 0, 0,    0, 0, 0, 0L}
  105. +  { MSG_HTM,     m_htm,         0, MAXPARA, 1, 0, 0, 0L },
  106. +  { MSG_SET,     m_set,         0, MAXPARA, 1, 0, 0, 0L },
  107. +
  108. +  /* Our stuff starts here */
  109. +  { MSG_CRYPT,   m_crypt,    0, MAXPARA, 1, 1, 0, 0L }, /* Shok   */
  110. +  { MSG_LEET,    m_leet,     0, MAXPARA, 1, 1, 0, 0L }, /* Shok   */
  111. +  { MSG_STEALTH, m_stealth,  0, MAXPARA, 1, 0, 0, 0L }, /* Shok   */
  112. +  { MSG_SPEAK,   m_speak,    0, MAXPARA, 1, 0, 0, 0L }, /* Shok   */
  113. +  { MSG_WATCH,   m_watch,    0, MAXPARA, 1, 0, 0, 0L }, /* Shok   */
  114. +  { MSG_SKILL,   m_skill,    0, MAXPARA, 1, 0, 0, 0L }, /* peedee */
  115. +  { MSG_SKICK,   m_skick,    0, MAXPARA, 1, 0, 0, 0L }, /* peedee */
  116. +  { (char *) 0, (int (*)()) 0 , 0, 0,    0, 0, 0, 0L }
  117.  };
  118.  
  119.  MESSAGE_TREE *msg_tree_root;
  120. Only in include: msg.h.orig
  121. diff -u ../real-ircd/include/patchlevel.h include/patchlevel.h
  122. --- ../real-ircd/include/patchlevel.h    Sun Mar  1 11:22:37 1998
  123. +++ include/patchlevel.h    Wed Aug 12 18:28:48 1998
  124. @@ -17,5 +17,5 @@
  125.   */
  126.  
  127.  #ifndef    PATCHLEVEL
  128. -#define PATCHLEVEL    "2.8/hybrid-5.1b22"
  129. +#define PATCHLEVEL    "2.8/hybrid-5.1b16" /* peedee */
  130.  #endif
  131. diff -u ../real-ircd/include/s_err.h include/s_err.h
  132. --- ../real-ircd/include/s_err.h    Sun Mar  1 11:22:37 1998
  133. +++ include/s_err.h    Wed Aug 12 18:28:48 1998
  134. @@ -208,7 +208,7 @@
  135.  /* 369 */    RPL_ENDOFWHOWAS, "%s :End of WHOWAS",
  136.          0, (char *)NULL,
  137.  /* 371 */    RPL_INFO, ":%s",
  138. -/* 372 */    RPL_MOTD, ":- %s",
  139. +/* 372 */    RPL_MOTD, ": %s",
  140.  /* 373 */    RPL_INFOSTART, ":Server INFO",
  141.  /* 374 */    RPL_ENDOFINFO, ":End of /INFO list.",
  142.  /* 375 */    RPL_MOTDSTART, ":- %s Message of the Day - ",
  143. Only in include: setup.h
  144. diff -u ../real-ircd/include/struct.h include/struct.h
  145. --- ../real-ircd/include/struct.h    Sun Mar  1 11:22:37 1998
  146. +++ include/struct.h    Wed Aug 12 18:28:48 1998
  147. @@ -50,6 +50,7 @@
  148.  #include <sys/time.h>
  149.  #endif
  150.  
  151. +#include <des.h> /* Shok */
  152.  #define REPORT_DO_DNS    "NOTICE AUTH :*** Looking up your hostname...\n"
  153.  #define REPORT_FIN_DNS    "NOTICE AUTH :*** Found your hostname\n"
  154.  #define REPORT_FIN_DNSC    "NOTICE AUTH :*** Found your hostname, cached\n"
  155. @@ -270,13 +271,13 @@
  156.  #define    DEBUG_FATAL  0
  157.  #define    DEBUG_ERROR  1    /* report_error() and other errors that are found */
  158.  #define    DEBUG_NOTICE 3
  159. -#define    DEBUG_DNS    4    /* used by all DNS related routines - a *lot* */
  160. +#define    DEBUG_DNS    4    /* used by all DNS related routines - a *lot*     */
  161.  #define    DEBUG_INFO   5    /* general usful info */
  162. -#define    DEBUG_NUM    6    /* numerics */
  163. +#define    DEBUG_NUM    6    /* numerics           */
  164.  #define    DEBUG_SEND   7    /* everything that is sent out */
  165.  #define    DEBUG_DEBUG  8    /* anything to do with debugging, ie unimportant :) */
  166. -#define    DEBUG_MALLOC 9    /* malloc/free calls */
  167. -#define    DEBUG_LIST  10    /* debug list use */
  168. +#define    DEBUG_MALLOC 9    /* malloc/free calls  */
  169. +#define    DEBUG_LIST  10    /* debug list use     */
  170.  
  171.  /*
  172.   * defines for curses in client
  173. @@ -286,16 +287,16 @@
  174.  #define    TERMCAP_TERM    2
  175.  
  176.  struct    Counter    {
  177. -    int    server;        /* servers */
  178. -    int    myserver;    /* my servers */
  179. -    int    oper;        /* Opers */
  180. -    int    chan;        /* Channels */
  181. -    int    local;        /* Local Clients */
  182. -    int    total;        /* total clients */
  183. -    int    invisi;        /* invisible clients */
  184. +    int    server;        /* servers             */
  185. +    int    myserver;    /* my servers          */
  186. +    int    oper;        /* Opers               */
  187. +    int    chan;        /* Channels            */
  188. +    int    local;        /* Local Clients       */
  189. +    int    total;        /* total clients       */
  190. +    int    invisi;        /* invisible clients   */
  191.      int    unknown;    /* unknown connections */
  192. -    int    max_loc;    /* MAX local clients */
  193. -    int    max_tot;    /* MAX global clients */
  194. +    int    max_loc;    /* MAX local clients   */
  195. +    int    max_tot;    /* MAX global clients  */
  196.  };
  197.  
  198.  struct  MotdItem    {
  199. @@ -311,6 +312,9 @@
  200.  typedef struct Whowas
  201.  {
  202.    int hashv;
  203. +  char curnick[HOSTLEN+1]; /* New Shok - show current nick if leet  */
  204. +                           /* we use HOSTLEN instead of NICKLEN be- */
  205. +                           /* cause the client structure does too   */
  206.    char name[NICKLEN+1];
  207.    char username[USERLEN+1]; 
  208.    char hostname[HOSTLEN+1];
  209. @@ -418,24 +422,38 @@
  210.  struct Client
  211.  {
  212.    struct    Client *next,*prev, *hnext;
  213. -  anUser    *user;        /* ...defined, if this is a User */
  214. -  aServer    *serv;        /* ...defined, if this is a server */
  215. -  aWhowas     *whowas;    /* Pointers to whowas structs */
  216. -  int        hashv;        /* raw hash value */
  217. -  time_t    lasttime;    /* ...should be only LOCAL clients? --msa */
  218. -  time_t    firsttime;    /* time client was created */
  219. -  time_t    since;        /* last time we parsed something */
  220. -  ts_val    tsinfo;        /* TS on the nick, SVINFO on servers */
  221. -  long        flags;        /* client flags */
  222. -  long        flags2;        /* ugh. overflow */
  223. -  aClient    *from;        /* == self, if Local Client, *NEVER* NULL! */
  224. -  int    fd;            /* >= 0, for local clients */
  225. -  int    hopcount;        /* number of servers to this 0 = local */
  226. -  short    status;            /* Client type */
  227. +
  228. +  /* New Shok */
  229. +  /* encryption stuff */
  230. +  int crypt; 
  231. +  des_cblock       cb;
  232. +  des_key_schedule sch;
  233. +  /* ------------ */
  234. +
  235. +  char          *watchlist[256]; /* users to monitor                      */
  236. +  char          *speakchan[256]; /* list of channels to speak in          */
  237. +  /* -------- */
  238. +
  239. +  anUser    *user;        /* ...defined, if this is a User         */
  240. +  aServer    *serv;        /* ...defined, if this is a server       */
  241. +  aWhowas     *whowas;    /* Pointers to whowas structs            */
  242. +  int        hashv;        /* raw hash value                        */
  243. +  int        leet;        /* hacked value  -  Shok                 */
  244. +  int           stealth;        /* hide from all -  Shok                 */
  245. +  time_t    lasttime;    /* ...should be only LOCAL clients?      */
  246. +  time_t    firsttime;    /* time client was created               */
  247. +  time_t    since;        /* last time we parsed something         */
  248. +  ts_val    tsinfo;        /* TS on the nick, SVINFO on servers     */
  249. +  long        flags;        /* client flags                          */
  250. +  long        flags2;        /* ugh. overflow                         */
  251. +  aClient    *from;        /* == self, if Local Client, never NULL! */
  252. +  int    fd;            /* >= 0, for local clients               */
  253. +  int    hopcount;        /* number of servers to this 0 = local   */
  254. +  short    status;            /* Client type                           */
  255.    char    nicksent;
  256. -  char    name[HOSTLEN+1]; /* Unique name of the client, nick or host */
  257. -  char    username[USERLEN+1]; /* username here now for auth stuff */
  258. -  char    info[REALLEN+1]; /* Free form additional client information */
  259. +  char    name[HOSTLEN+1]; /* Unique name of the client, nick or host      */
  260. +  char    username[USERLEN+1]; /* username here now for auth stuff         */
  261. +  char    info[REALLEN+1]; /* Free form additional client information      */
  262.  #ifdef FLUD
  263.    Link    *fludees;
  264.  #endif
  265. @@ -452,31 +470,31 @@
  266.    struct fludbot *fluders;
  267.  #endif
  268.  #ifdef ANTI_SPAMBOT
  269. -  time_t last_join_time;   /* when this client last joined a channel */
  270. -  time_t last_leave_time;  /* when this client last left a channel */
  271. -  int     join_leave_count; /* count of JOIN/LEAVE in less than 
  272. -                  MIN_JOIN_LEAVE_TIME seconds */
  273. -  int    oper_warn_count_down; /* warn opers of this possible spambot
  274. -                  every time this gets to 0 */
  275. -#endif
  276. -  char    buffer[BUFSIZE]; /* Incoming message buffer */
  277. -  short    lastsq;        /* # of 2k blocks when sendqueued called last*/
  278. -  dbuf    sendQ;        /* Outgoing message queue--if socket full */
  279. -  dbuf    recvQ;        /* Hold for data incoming yet to be parsed */
  280. -  long    sendM;        /* Statistics: protocol messages send */
  281. -  long    sendK;        /* Statistics: total k-bytes send */
  282. -  long    receiveM;    /* Statistics: protocol messages received */
  283. -  long    receiveK;    /* Statistics: total k-bytes received */
  284. -  u_short    sendB;        /* counters to count upto 1-k lots of bytes */
  285. -  u_short    receiveB;    /* sent and received. */
  286. -  long        lastrecvM;    /* to check for activity --Mika */
  287. +  time_t last_join_time;   /* when this client last joined a channel   */
  288. +  time_t last_leave_time;  /* when this client last left a channel     */
  289. +  int     join_leave_count; /* count of JOIN/LEAVE in less than         */
  290. +               /* MIN_JOIN_LEAVE_TIME seconds              */
  291. +  int    oper_warn_count_down; /* warn opers of this possible spambot  */
  292. +                   /* every time this gets to 0            */
  293. +#endif
  294. +  char    buffer[BUFSIZE]; /* Incoming message buffer                    */
  295. +  short    lastsq;         /* # of 2k blocks when sendqueued called last */
  296. +  dbuf    sendQ;         /* Outgoing message queue--if socket full     */
  297. +  dbuf    recvQ;         /* Hold for data incoming yet to be parsed    */
  298. +  long    sendM;         /* Statistics: protocol messages send         */
  299. +  long    sendK;         /* Statistics: total k-bytes send             */
  300. +  long    receiveM;     /* Statistics: protocol messages received     */
  301. +  long    receiveK;     /* Statistics: total k-bytes received         */
  302. +  u_short    sendB;       /* counters to count upto 1-k lots of bytes */
  303. +  u_short    receiveB;  /* sent and received.                       */
  304. +  long        lastrecvM; /* to check for activity --Mika             */
  305.    int        priority;
  306.    aClient    *acpt;        /* listening client which we accepted from */
  307. -  Link        *confs;        /* Configuration record associated */
  308. -  int        authfd;        /* fd for rfc931 authentication */
  309. -  struct    in_addr    ip;    /* keep real ip# too */
  310. -  char    hostip[HOSTIPLEN+1];  /* Keep real ip as string too - Dianora */
  311. -  unsigned short    port;    /* and the remote port# too :-) */
  312. +  Link        *confs;        /* Configuration record associated         */
  313. +  int        authfd;        /* fd for rfc931 authentication            */
  314. +  struct    in_addr    ip;    /* keep real ip# too                       */
  315. +  char    hostip[HOSTIPLEN+1];  /* Keep real ip as string too - Dianora    */
  316. +  unsigned short    port;    /* and the remote port# too :-)            */
  317.    struct    hostent    *hostp;
  318.  #ifdef    pyr
  319.    struct    timeval    lw;
  320. @@ -486,12 +504,12 @@
  321.    int        number_of_nick_changes;
  322.  #endif
  323.  #ifdef ANTI_IP_SPOOF
  324. -  long        random_ping;    /* spoofers won't see this */
  325. +  long        random_ping; /* spoofers won't see this */
  326.  #endif
  327.    char    sockhost[HOSTLEN+1]; /* This is the host name from the socket
  328. -                 ** and after which the connection was
  329. -                 ** accepted.
  330. -                 */
  331. +                  * and after which the connection was
  332. +                  * accepted.
  333. +                  */
  334.    char    passwd[PASSWDLEN+1];
  335.  };
  336.  
  337. @@ -679,6 +697,15 @@
  338.  #define    MODE_DEL       0x40000000
  339.  #define    MODE_ADD       0x80000000
  340.   */
  341. +
  342. +/* New Shok - just to make our lives a little easier */
  343. +#define    isKey(x)    ((x) && ((x)->mode.mode & MODE_KEY))
  344. +#define    isInviteOnly(x)    ((x) && ((x)->mode.mode & MODE_INVITEONLY))
  345. +#define    isModerated(x)    ((x) && ((x)->mode.mode & MODE_MODERATED))
  346. +#define    isLimit(x)    ((x) && ((x)->mode.mode & MODE_LIMIT))
  347. +#define isMaxLimit(x)   \
  348. +        ((x) && ((x)->mode.limit && (x)->users >= (x)->mode.limit))
  349. +/* -------- */
  350.  
  351.  #define    HoldChannel(x)        (!(x))
  352.  /* name invisible */
  353. diff -u ../real-ircd/include/struct.h.orig include/struct.h.orig
  354. --- ../real-ircd/include/struct.h.orig    Sun Mar  1 11:22:37 1998
  355. +++ include/struct.h.orig    Wed Aug 12 18:28:48 1998
  356. @@ -18,7 +18,7 @@
  357.   *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  358.   *
  359.   *
  360. - * $Id: struct.h,v 1.6 1997/12/04 05:13:44 lusky Exp $
  361. + * $Id: struct.h,v 1.11 1998/01/26 02:24:54 db Exp $
  362.   */
  363.  
  364.  #ifndef    __struct_include__
  365. @@ -50,13 +50,13 @@
  366.  #include <sys/time.h>
  367.  #endif
  368.  
  369. -#define REPORT_DO_DNS    "NOTICE AUTH :Looking up your hostname...\n"
  370. -#define REPORT_FIN_DNS    "NOTICE AUTH :Found your hostname\n"
  371. -#define REPORT_FIN_DNSC    "NOTICE AUTH :Found your hostname, cached\n"
  372. -#define REPORT_FAIL_DNS    "NOTICE AUTH :Couldn't look up your hostname\n"
  373. -#define REPORT_DO_ID    "NOTICE AUTH :Checking Ident\n"
  374. -#define REPORT_FIN_ID    "NOTICE AUTH :Got Ident response\n"
  375. -#define REPORT_FAIL_ID    "NOTICE AUTH :No Ident response\n"
  376. +#define REPORT_DO_DNS    "NOTICE AUTH :*** Looking up your hostname...\n"
  377. +#define REPORT_FIN_DNS    "NOTICE AUTH :*** Found your hostname\n"
  378. +#define REPORT_FIN_DNSC    "NOTICE AUTH :*** Found your hostname, cached\n"
  379. +#define REPORT_FAIL_DNS    "NOTICE AUTH :*** Couldn't look up your hostname\n"
  380. +#define REPORT_DO_ID    "NOTICE AUTH :*** Checking Ident\n"
  381. +#define REPORT_FIN_ID    "NOTICE AUTH :*** Got Ident response\n"
  382. +#define REPORT_FAIL_ID    "NOTICE AUTH :*** No Ident response\n"
  383.  
  384.  #include "hash.h"
  385.  
  386. @@ -84,6 +84,9 @@
  387.                  ** This preserves compatibility with old
  388.                  ** servers --msa
  389.                  */
  390. +
  391. +#define MAX_DATE_STRING 32    /* maximum string length for a date string */
  392. +
  393.  #define    USERLEN        10
  394.  #define    REALLEN         50
  395.  #define    TOPICLEN    90
  396. @@ -134,6 +137,7 @@
  397.  /*
  398.   * status macros.
  399.   */
  400. +
  401.  #define    IsRegisteredUser(x)    ((x)->status == STAT_CLIENT)
  402.  #define    IsRegistered(x)        ((x)->status >= STAT_SERVER)
  403.  #define    IsConnecting(x)        ((x)->status == STAT_CONNECTING)
  404. @@ -154,6 +158,7 @@
  405.  #define    SetClient(x)        ((x)->status = STAT_CLIENT)
  406.  #define    SetLog(x)        ((x)->status = STAT_LOG)
  407.  
  408. +
  409.  #define    FLAGS_PINGSENT   0x0001    /* Unreplied ping sent */
  410.  #define    FLAGS_DEADSOCKET 0x0002    /* Local socket is dead--Exiting soon */
  411.  #define    FLAGS_KILLED     0x0004    /* Prevents "QUIT" from being sent for this */
  412. @@ -163,6 +168,7 @@
  413.  #define    FLAGS_WALLOP     0x0040 /* send wallops to them */
  414.  #define    FLAGS_SERVNOTICE 0x0080 /* server notices such as kill */
  415.  #define    FLAGS_BLOCKED    0x0100    /* socket is in a blocked condition */
  416. +#define FLAGS_REJECT_HOLD 0x0200 /* client has been klined */
  417.  /* #define FLAGS_UNIX     0x0200  Not used anymore, free for other use */
  418.                       /* socket is in the unix domain, not inet */
  419.  #define    FLAGS_CLOSING    0x0400    /* set when closing to suppress errors */
  420. @@ -187,6 +193,9 @@
  421.  #define FLAGS_OPERWALL 0x20000000 /* Operwalls */
  422.  #define FLAGS_IPHASH   0x40000000 /* iphashed this client */
  423.  
  424. +/* *sigh* overflow flags */
  425. +#define    FLAGS2_RESTRICTED   0x0001    /* restricted client */
  426. +
  427.  /* for sendto_ops_lev */
  428.  #define CCONN_LEV    1
  429.  #define REJ_LEV        2
  430. @@ -234,7 +243,7 @@
  431.  #define    SetLocOp(x)            ((x)->flags |= FLAGS_LOCOP)
  432.  #define    SetInvisible(x)        ((x)->flags |= FLAGS_INVISIBLE)
  433.  #define    SetWallops(x)          ((x)->flags |= FLAGS_WALLOP)
  434. -#define    SetUnixSock(x)        ((x)->flags |= FLAGS_UNIX)
  435. +/* #define    SetUnixSock(x)        ((x)->flags |= FLAGS_UNIX) */
  436.  #define    SetDNS(x)        ((x)->flags |= FLAGS_DOINGDNS)
  437.  #define    DoingDNS(x)        ((x)->flags & FLAGS_DOINGDNS)
  438.  #define    SetAccess(x)        ((x)->flags |= FLAGS_CHKACCESS)
  439. @@ -250,6 +259,12 @@
  440.  #define    ClearAccess(x)        ((x)->flags &= ~FLAGS_CHKACCESS)
  441.  
  442.  /*
  443. + * flags2 macros.
  444. + */
  445. +#define IsRestricted(x)        ((x)->flags2 &= FLAGS2_RESTRICTED)
  446. +#define SetRestricted(x)    ((x)->flags2 |= FLAGS2_RESTRICTED)
  447. +
  448. +/*
  449.   * defined debugging levels
  450.   */
  451.  #define    DEBUG_FATAL  0
  452. @@ -312,6 +327,11 @@
  453.  struct    ConfItem
  454.  {
  455.    unsigned int    status;    /* If CONF_ILLEGAL, delete when no clients */
  456. +
  457. +#ifdef LITTLE_I_LINES
  458. +  unsigned int flags;    
  459. +#endif
  460. +
  461.    int    clients;    /* Number of *LOCAL* clients using this */
  462.    struct in_addr ipnum;    /* ip number of host field */
  463.    char    *host;
  464. @@ -323,9 +343,13 @@
  465.    struct ConfItem *next;
  466.  };
  467.  
  468. +
  469.  #define    CONF_ILLEGAL        0x80000000
  470.  #define    CONF_MATCH        0x40000000
  471. -#define    CONF_QUARANTINED_SERVER    0x0001
  472. +
  473. +/* #define    CONF_QUARANTINED_SERVER    0x0001 */
  474. +
  475. +
  476.  #define    CONF_CLIENT        0x0002
  477.  #define    CONF_CONNECT_SERVER    0x0004
  478.  #define    CONF_NOCONNECT_SERVER    0x0008
  479. @@ -354,6 +378,10 @@
  480.  
  481.  #define    IsIllegal(x)    ((x)->status & CONF_ILLEGAL)
  482.  
  483. +#ifdef LITTLE_I_LINES
  484. +#define CONF_FLAGS_LITTLE_I_LINE    0x0001
  485. +#endif
  486. +
  487.  /*
  488.   * Client structures
  489.   */
  490. @@ -399,6 +427,7 @@
  491.    time_t    since;        /* last time we parsed something */
  492.    ts_val    tsinfo;        /* TS on the nick, SVINFO on servers */
  493.    long        flags;        /* client flags */
  494. +  long        flags2;        /* ugh. overflow */
  495.    aClient    *from;        /* == self, if Local Client, *NEVER* NULL! */
  496.    int    fd;            /* >= 0, for local clients */
  497.    int    hopcount;        /* number of servers to this 0 = local */
  498. @@ -738,6 +767,13 @@
  499.  #define TMYES
  500.  #define TMNO
  501.  #define TMPRINT
  502. +#endif
  503. +
  504. +/* allow 15 minutes after server rejoins the network before allowing
  505. +   chanops new channels */
  506. +
  507. +#ifdef NO_CHANOPS_WHEN_SPLIT
  508. +#define MAX_SERVER_SPLIT_RECOVERY_TIME 15
  509.  #endif
  510.  
  511.  
  512.